package main

func myPow(x float64, n int) float64 {
	if n >= 0 {
		return quickPow(x, n)
	}
	return 1.0 / quickPow(x, -n)
}

func quickPow(x float64, n int) float64 {
	if n == 0 {
		return 1.0
	}
	y := quickPow(x, n/2)
	if n%2 == 1 {
		return y * y * x
	}
	return y * y
}

func quickPow2(x float64, n int) float64 {
	ans := 1.0
	for n > 0 {
		if n%2 == 1 {
			ans *= x
		}
		x *= x
		n /= 2
	}
	return ans
}

func main() {
	println(myPow(2.0, -2))
	println(quickPow2(2, 10))
}
